﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime;
using System.Runtime.InteropServices;
using System.Runtime.CompilerServices;

namespace Adaptive.Foundation.CodeDom.Native
{
    [ComImport, ComVisible(true), InterfaceType(ComInterfaceType.InterfaceIsIUnknown), Guid("59B2D1D0-5DB0-4F9F-9609-13F0168516D6")]
    public interface IVsHierarchy
    {
        [PreserveSig]
        int SetSite(IOleServiceProvider pSP);
        [PreserveSig]
        int GetSite(out IOleServiceProvider ppSP);
        [PreserveSig]
        int QueryClose(out bool pfCanClose);
        void Close();
        [PreserveSig]
        int GetGuidProperty(int itemid, int propid, out Guid pguid);
        [PreserveSig]
        int SetGuidProperty(int itemid, int PropId, ref Guid rguid);
        [PreserveSig]
        int GetProperty(int itemid, int propid, out object pobj);
        [PreserveSig]
        int SetProperty(int _itemid, int _PropId, object _obj);
        [PreserveSig]
        int GetNestedHierarchy(int itemid, ref Guid iidHierarchyNested, [MarshalAs(UnmanagedType.Interface)] out object ppHierarchyNested, out int pitemidNested);
        [PreserveSig]
        int GetCanonicalName(int itemid, [MarshalAs(UnmanagedType.BStr)] out string pbstrName);
        [PreserveSig]
        int ParseCanonicalName([MarshalAs(UnmanagedType.BStr)] string pszName, out int pitemid);
        [PreserveSig]
        int Unused0();
        [PreserveSig]
        int AdviseHierarchyEvents(IVsHierarchyEvents pEventSink, out int pdwCookie);
        [PreserveSig]
        int UnadviseHierarchyEvents(int dwCookie);
        [PreserveSig]
        int Unused1();
        [PreserveSig]
        int Unused2();
        [PreserveSig]
        int Unused3();
        [PreserveSig]
        int Unused4();
    }
}
